package com.example.testapp.config.model

import java.io.Serializable

/**
 * 应用配置类，用于存储应用的所有配置项
 * Kotlin数据类自动生成getter、setter、equals、hashCode和toString方法
 */
data class AppConfig(
    // API配置
    @get:JvmName("getApiBaseUrl")
    var apiBaseUrl: String = "https://api.example.com",
    @get:JvmName("getApiTimeout")
    var apiTimeout: Int = 30000,  // 毫秒
    @get:JvmName("isApiLogEnabled")
    var apiLogEnabled: Boolean = false,
    
    // 图片识别API配置
    @get:JvmName("getImageApiProvider")
    var imageApiProvider: String = "",
    @get:JvmName("getImageApiUrl")
    var imageApiUrl: String = "",
    @get:JvmName("getImageApiKey")
    var imageApiKey: String = "",
    
    // AI API配置
    @get:JvmName("getAiApiProvider")
    var aiApiProvider: String = "",
    @get:JvmName("getAiApiUrl")
    var aiApiUrl: String = "",
    @get:JvmName("getAiApiKey")
    var aiApiKey: String = "",
    
    // 用户偏好设置
    @get:JvmName("isDarkModeEnabled")
    var darkModeEnabled: Boolean = false,
    @get:JvmName("isNotificationsEnabled")
    var notificationsEnabled: Boolean = true,
    @get:JvmName("getDefaultCurrency")
    var defaultCurrency: String = "CNY",
    
    // 应用主题
    @get:JvmName("getThemeColor")
    var themeColor: String = "#2196F3",  // 默认蓝色
    
    // 设置页面配置
    @get:JvmName("isAutoBackupEnabled")
    var autoBackupEnabled: Boolean = true,
    @get:JvmName("isAccountingReminderEnabled")
    var accountingReminderEnabled: Boolean = false,
    @get:JvmName("isExpressRecognitionEnabled")
    var expressRecognitionEnabled: Boolean = true
) : Serializable {
    companion object {
        private const val serialVersionUID = 1L
        
        /**
         * 获取默认的配置实例
         * @return 默认配置
         */
        @JvmStatic
        fun getDefaultConfig(): AppConfig {
            return AppConfig()
        }
    }
} 